import Request from '../../utils/request.js'

/**
 * 发票相关API
 * 重构为 class + static async 以统一项目风格
 */
class InvoiceApi {
  /**
   * 获取可开发票订单列表（分页）
   * @param {Object} params
   * @param {number|null} params.orderType - 订单类型：null为全部，1为充电，2为停车
   * @param {number} [params.pageNo=1] - 页码
   * @param {number} [params.pageSize=10] - 每页数量
   * @returns {Promise<Array>} 发票订单列表
   */
  static async getInvoiceOrderList(params = {}) {
    return Request.post('/api/order/info/invoicePage', {
      orderType: params.orderType === undefined ? null : params.orderType,
      pageNo: params.pageNo || 1,
      pageSize: params.pageSize || 10
    });
  }

  /**
   * 获取发票抬头列表
   * @returns {Promise<Array>} 发票抬头列表
   */
  static async getInvoiceTitleList() {
    return Request.post('/api/invoice/headers/list');
  }

  /**
   * 设置发票抬头默认状态
   * @param {Object} params
   * @param {string|number} params.id - 抬头ID
   * @param {boolean|number} params.isDefault - 是否设为默认
   * @returns {Promise<Object>} 设置结果
   */
  static async updateInvoiceHeads(params = {}) {
    return Request.post('/api/invoice/headers/update', params);
  }

  /**
   * 解绑发票抬头
   * @param {Object} params
   * @param {string|number} params.id - 抬头ID
   * @returns {Promise<Object>} 解绑结果
   */
  static async unbindInvoiceHeads(params = {}) {
    return Request.deleteById('/api/invoice/headers/unbind/{id}', params.id);
  }

  /**
   * 获取发票抬头明细信息
   * @param {Object} params
   * @param {string|number} params.id - 抬头ID
   * @returns {Promise<Object>} 发票抬头明细
   */
  static async getInvoiceHeadDetail(params = {}) {
    return Request.post('/api/invoice/headers/get', { id: params.id });
  }

    /**
   * 创建发票抬头
   * @param {Object} params
   * @param {string} params.title - 抬头名称
   * @param {string} [params.taxNo] - 税号（企业必填）
   * @param {string} [params.address] - 单位地址
   * @param {string} [params.phone] - 电话号码
   * @param {string} [params.bank] - 开户银行
   * @param {string} [params.bankAccount] - 银行账号
   * @param {boolean|number} [params.isDefault=false] - 是否设为默认
   * @param {number} [params.type=1] - 抬头类型：1企业，2个人/非企业
   * @returns {Promise<Object>} 创建结果
   */
  static async createInvoiceHead(params = {}) {
    return Request.post('/api/invoice/headers/create', params);
  }

  /**
   * 更新发票抬头
   * @param {Object} params
   * @param {string|number} params.id - 抬头ID
   * @param {string} params.title - 抬头名称
   * @param {string} [params.taxNo] - 税号（企业必填）
   * @param {string} [params.address] - 单位地址
   * @param {string} [params.phone] - 电话号码
   * @param {string} [params.bank] - 开户银行
   * @param {string} [params.bankAccount] - 银行账号
   * @param {boolean|number} [params.isDefault=false] - 是否设为默认
   * @param {number} [params.type=1] - 抬头类型：1企业，2个人/非企业
   * @returns {Promise<Object>} 更新结果
   */
  static async updateInvoiceHead(params = {}) {
    return Request.post('/api/invoice/headers/update', params);
  }

  /**
   * 分页获取已开发票列表
   * @param {Object} params
   * @param {number} [params.pageNo=1] - 页码
   * @param {number} [params.pageSize=10] - 每页数量
   * @returns {Promise<Array>} 已开发票列表
   */
  static async getInvoicedList(params = {}) {
    return Request.post('/api/invoice/history/page', {
      pageNo: params.pageNo || 1,
      pageSize: params.pageSize || 10
    });
  }

  /**
   * 获取单张发票历史明细
   * @param {Object} params
   * @param {string|number} params.id - 发票历史ID
   * @returns {Promise<Object>} 发票历史明细
   */
  static async getInvoiceHistoryDetail(params = {}) {
    return Request.post('/api/invoice/history/get', { id: params.id });
  }
}


export default InvoiceApi;